1
Mapeamento de Hardware para Software: Versões de Capacidade de Computação
AI021Lesson 5
00:00

A Capacidade de Computação (CC) atua como a ponte de versão entre arquitetura virtual (PTX) e arquitetura real (SASS/ binário). Os desenvolvedores usam nvcc para direcionar plataformas específicas, variando desde plataformas desktop/servidor até plataformas embarcadas, em modelos de sistema operacional como Linux 64-bit (LP64) ou Windows 64-bit (LLP64).

1. Arquiteturas Virtuais versus Reais

A ferramenta CUDA suporta arquiteturas de GPU das duas últimas versões principais, referenciadas em Tabela 29: Suporte a Funcionalidades em Capacidades de Computação (7.5 a 12.x). Definimos mapeamentos usando flags como: nvcc --generate-code arch=compute_80,code=sm_90 prog.cu. Para alvos voltados para o futuro, flags como nvcc -arch=sm_100 ou variantes especializadas como nvcc -arch=sm_100a são usadas.

2. A Hierarquia de Macros

O compilador usa __CUDA_ARCH__ para ramificar código. A macro __CUDA_ARCH__ é definida apenas em código de dispositivo (por exemplo, __device__, __global__). Um controle mais granular é fornecido por __CUDA_ARCH_SPECIFIC__ e __CUDA_ARCH_FAMILY_SPECIFIC__. Algumas funcionalidades, como Memória Compartilhada Distribuída ou payloads específicos NaN, exigem Capacidade de Computação 9.0+ ou Capacidade de Computação 10.0 e posteriores.

3. Limites e Restrições Numéricos

A precisão varia conforme a CC; por exemplo, o tratamento de subnormais garante $2^{-16382} \approx 3.36 \cdot 10^{-4932}$. Limites de hardware como CUDA_DEVICE_MAX_COPY_CONNECTIONS=16 ou a diretiva .maxnreg da diretiva PTX são estritamente aplicados com base na versão de CC alvo.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>